JOANNEUMHomeForschungsbereicheNeuSite MapRESEARCH      englishsuchenHilfe

vorheriges Kapitel &Umlbersicht Inhalt Hilfe Beispiele laden nächstes Kapitel

Ein Bereichs-Objekt erzeugen

Laden Den kompletten Code der Beispiele in diesem Abschnitt finden Sie in der Datei "Objekt.xls".

Mit Visual Basic steuern oder schaffen Sie EXCEL-Objekte, benützen deren Methoden und lesen oder setzen deren Eigenschaften. Sie können aber auch selbst Objekte erzeugen.

Angenommen, Sie wollen eine Zelle in der aktiven Tabelle auswählen. Das geht recht einfach:

[A1].Select


Liegt diese Zelle aber nicht in der aktiven Arbeitsmappe, wird die Ansprache mühsamer:

Workbooks("OBJEKT.XLS").Activate
Worksheets("Tabelle1").Select
Cells(1, 1).Select


Stellen Sie sich vor, Sie müssen zwanzig Mal eine Zelle in einer nicht aktiven Arbeitsmappe ansprechen! Was für eine Schreibarbeit! Und wie schlecht lesbar! Außerdem führt dieser Code dazu, daß Arbeitsmappe und Tabelle in den Vordergrund geholt werden-das kann passen, muß es aber nicht.

Zum Glück bietet uns VBA eine Lösung an. Wir können ein Objekt einer Variablen zuweisen und es ab diesem Zeitpunkt durch Angabe des Variablennamens manipulieren.

DIE "SET"-ANWEISUNG

Wenn Zellen ausgewählt worden sind, lohnt es sich häufig, sie als Bereichs-Objekt anzusprechen und mit den Methoden und Eigenschaften des Bereichs-Objektes zu arbeiten. Für das Schaffen von Objekten ist die "Set"-Anweisung gedacht:

Set Variable=Objekt

Sub Objekt_1()

Set MeinBereich = Workbooks("Objekt.XLS"). _
    Sheets("Tabelle1").Cells(1, 1)
MeinBereich.Value = "Diese Meldung kommt aus Zelle A1 von Tabelle1, " & _
    "Arbeitsmappe Objekt.XLS"
MsgBox MeinBereich.Value

End Sub


Enthält der Bereich, aus dem ein Objekt gebildet werden soll, mehrere Zellen, so muß-im Gegensatz zum VBA-Handuch für EXCEL 5.0, Seite 116, das Objekt so gebildet werden:

Set MeinObjekt = Workbooks("OBJEKT.XLS").Worksheets("Tabelle1"). _
    Range(Worksheets("Tabelle1").Cells(1; 1); _
    Worksheets("Tabelle1"). Cells(8; 1))


Mit Hilfe der "Set"-Anweisung können wir Kopien von Objekten erzeugen:

Set DeinObjekt = ActiveWindow.Selection
Set TestObjekt = DeinObjekt  ' Objektreferenz zuweisen.
' TestObjekt und DeinObjekt beziehen sich auf dasselbe Objekt.
DeinObjekt.Text = "Hallo Welt"  ' Eigenschaft initialisieren.
TestZnF = TestObjekt.Text  ' "Hallo Welt" zurückgeben
' Zuordnung beenden. TestObjekt bezieht sich nicht mehr auf DeinObjekt.
Set TestObjekt = Nothing


Hinweis Verwenden wir bei Bereichs-Objekten die Anweisung

Variable=Objekt

dann erhält "Variable" den Wert des Objektes. Es wird also keine Objektvariable geschaffen!

NUR EINEN TEIL EINES OBJEKTES ZUWEISEN

In unserem Beispiel oben:

Set MeinBereich = Workbooks("Objekt.XLS"). _
    Sheets("Tabelle1").Cells(1, 1)


enthält "MeinBereich" die feste Zuordnung an Zelle A1 von "OBJEKT.XLS", "Tabelle1". Was ist, wenn wir aber verschiedene Zellen in diesem Tabellenblatt ansprechen wollen? Diesfalls wäre es klüger, der Objektvariablen nur die Referenz auf Mappe und Blatt zuzuweisen:

Sub Objekt_2()

Set Meinblatt = Workbooks("Objekt.XLS"). _
    Sheets("Tabelle1")
Meinblatt.Cells(1, 1).Value = " Diese Meldung kommt aus Zelle A1 von Tabelle1, " & _
    "Arbeitsmappe Objekt.XLS"
MsgBox Meinblatt.Cells(1, 1).Value

Meinblatt.Cells(1, 1).Font.Bold = True

End Sub


Dies gibt uns die Möglichkeit, zum Beispiel anschließend zu schreiben:

MeinBlatt.Cells(1, 1).Font.Bold = True


EINE UNABHÄNGIGE KOPIE EINES OBJEKTES ERZEUGEN

Wie wir weiter oben gesehen haben, können wir mit der Anweisung


Set Objektvariable2=Objektvariable1

die Kopie eines Objektes erzeugen. Weisen wir VBA an:

Objektvariable2.Value=Wert


dann erhält auch Objektvariable1 diesen Wert, den sie verweist ja auf die selbe Zelle.

Sub Objekt_3()

Set Originalbereich = Workbooks("OBJEKT.XLS"). _
    Sheets("Tabelle1").Cells(1, 1)
Set Kopiebereich = Originalbereich
Originalbereich.Value = "Kopiebereich enthält den Wert von Originalbereich"
MsgBox Kopiebereich.Value

End Sub


Ändern wir die Größe von "Originalbereich", behält "Kopiebereich" seine Größe:

Sub Objekt_4()

Set Originalbereich = Workbooks("OBJEKT.XLS"). _
    Sheets("Tabelle1").Cells(1, 1)
Set Kopiebereich = Originalbereich
Set Originalbereich = Originalbereich.Offset(3, 3)
MsgBox "Originalbereich hat die Adresse: " & _
    Originalbereich.Address
MsgBox "Kopiebereich hat die Adresse: " & _
    Kopiebereich.Address

End Sub


Bewegen wir den Zellzeiger um x Zeilen und y Spalten vom Objekt weg, dann bleibt das Objekt an seiner alten Stelle:

Sub Objekt_5()

Workbooks("OBJEKT.XLS").Activate
Sheets("Tabelle1").Select
Cells(1, 1).Select
Set Originalbereich = Selection
Originalbereich.Offset(3, 3).Select
MsgBox "Originalbereich hat die Adresse: " & _
    Originalbereich.Address
MsgBox "Aber Cursor steht in " & _
    ActiveCell.Address

End Sub


Versetzen wir "Originalbereich", bleibt "Kopiebereich" am ursprünglichen Ort von "Originalbereich":

Sub Objekt_6()

Workbooks("OBJEKT.XLS").Activate
Sheets("Tabelle1").Select
Cells(1, 1).Select
Set Originalbereich = Selection
Set Kopiebereich = Originalbereich
Set Originalbereich = Selection.Offset(3, 3)
MsgBox "Originalbereich wurde versetzt nach: " & _
    Originalbereich.Address
MsgBox "Kopiebereich hat nach wie vor die " & _
    "Adresse: " & Kopiebereich.Address

End Sub


vorheriges Kapitel &Umlbersicht Inhalt Hilfe Beispiele laden nächstes Kapitel

------------

Copyright © by JOANNEUM RESEARCH Forschungsgesellschaft mbH